package com.example.synccenter.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;

/**
 * 调度器配置类，用于配置定时任务执行器。
 * 提供线程池任务调度器和任务注册器的配置。
 */
@Configuration
@EnableScheduling
public class SchedulerConfig {

    /**
     * 配置任务调度器
     * 使用线程池实现，支持并发执行定时任务
     * @return 线程池任务调度器
     */
    @Bean
    public TaskScheduler taskScheduler() {
        ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
        scheduler.setPoolSize(10);
        scheduler.setThreadNamePrefix("scheduled-task-");
        scheduler.setAwaitTerminationSeconds(60);
        scheduler.setWaitForTasksToCompleteOnShutdown(true);
        return scheduler;
    }

    /**
     * 配置定时任务注册器
     * 用于动态管理定时任务的注册和注销
     * @param taskScheduler 任务调度器
     * @return 定时任务注册器
     */
    @Bean
    public ScheduledTaskRegistrar scheduledTaskRegistrar(TaskScheduler taskScheduler) {
        ScheduledTaskRegistrar registrar = new ScheduledTaskRegistrar();
        registrar.setTaskScheduler(taskScheduler);
        return registrar;
    }
} 